package com.example.java250929_xmlaop.aspect;

import org.aspectj.lang.ProceedingJoinPoint;

public class LogAspect {
    // 前置通知
    public void beforeAdvice() {
        System.out.println("[前置通知] 方法即将执行");
    }

    // 后置通知（无论是否异常）
    public void afterAdvice() {
        System.out.println("[后置通知] 方法执行完成");
    }

    // 返回通知（正常返回）
    public void afterReturningAdvice() {
        System.out.println("[返回通知] 方法成功返回");
    }

    // 异常通知
    public void afterThrowingAdvice() {
        System.out.println("[异常通知] 方法抛出异常");
    }

    // 环绕通知
    public Object aroundAdvice(ProceedingJoinPoint joinPoint) throws Throwable {
        System.out.println("[环绕前] 执行目标方法前");
        Object result = joinPoint.proceed(); // 执行目标方法
        System.out.println("[环绕后] 执行目标方法后");
        return result;
    }
}